link-button: Reset the mouse cursor when destroyed
authorBastien Nocera <hadess@hadess.net>
Fri, 16 Sep 2011 14:04:44 +0000 (15:04 +0100)
committerBastien Nocera <hadess@hadess.net>
Fri, 16 Sep 2011 14:06:28 +0000 (15:06 +0100)
If clicking on a link destroys the link button, and keeps the
same GdkWindow then the cursor stays as a hand in the rest of
the interface.

https://bugzilla.gnome.org/show_bug.cgi?id=659247

gtk/gtklinkbutton.c

index cafa3aaacb36564ab872f4bf34be7b8c2095bfbc..bd2ca65d80bb018ae2693ce20bc1c08d6f043c1d 100644 (file)
@@ -106,6 +106,7 @@ static gboolean gtk_link_button_button_press (GtkWidget        *widget,
 static void     gtk_link_button_clicked      (GtkButton        *button);
 static gboolean gtk_link_button_popup_menu   (GtkWidget        *widget);
 static void     gtk_link_button_style_updated (GtkWidget        *widget);
+static void     gtk_link_button_unrealize    (GtkWidget        *widget);
 static gboolean gtk_link_button_enter_cb     (GtkWidget        *widget,
                                              GdkEventCrossing *event,
                                              gpointer          user_data);
@@ -153,6 +154,7 @@ gtk_link_button_class_init (GtkLinkButtonClass *klass)
   widget_class->button_press_event = gtk_link_button_button_press;
   widget_class->popup_menu = gtk_link_button_popup_menu;
   widget_class->style_updated = gtk_link_button_style_updated;
+  widget_class->unrealize = gtk_link_button_unrealize;
   
   container_class->add = gtk_link_button_add;
 
@@ -393,6 +395,14 @@ set_hand_cursor (GtkWidget *widget,
     g_object_unref (cursor);
 }
 
+static void
+gtk_link_button_unrealize (GtkWidget *widget)
+{
+  set_hand_cursor (widget, FALSE);
+
+  GTK_WIDGET_CLASS (gtk_link_button_parent_class)->unrealize (widget);
+}
+
 static void
 popup_menu_detach (GtkWidget *attach_widget,
                   GtkMenu   *menu)